<!DOCTYPE html>
<!-- saved from url=(0041)http://c.biancheng.net/view/vip_7066.html -->
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script type="text/javascript" async="" charset="utf-8" src="./8.22Java中main()方法的格式为什么是固定不变的？_files/core.php"></script>

<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面，任何其他内容都*必须*跟随其后！ -->
<!-- 启用Chromium高速渲染模式 -->
<meta name="renderer" content="webkit">
<meta name="force-rendering" content="webkit">
<!-- 禁止百度转码 -->
<meta name="applicable-device" content="pc,mobile">
<meta name="MobileOptimized" content="width">
<meta name="HandheldFriendly" content="true">
<meta http-equiv="Cache-Control" content="no-transform">
<meta http-equiv="Cache-Control" content="no-siteapp">
<!-- 禁止识别电话号码 -->
<meta name="format-detection" content="telephone=no">

<link rel="shortcut icon" href="http://c.biancheng.net/favicon.ico?v=1.6.72">
<link href="./8.22Java中main()方法的格式为什么是固定不变的？_files/common.css" rel="stylesheet">
<title>Java中main()方法的格式为什么是固定不变的？</title>
<meta name="description" content="在《 Java main()方法 》一节中提到 main() 方法定义必须是public static void main(String[] 字符串数组参数名)，本节告诉大家为什么在 Java 中定义 main 方法的语法是不可改变的。 1）public ：这个字">
</head>
<body>
<div id="topbar" class="clearfix">
	<ul id="product-type" class="left">
		<li>
			<a href="http://c.biancheng.net/"><span class="iconfont iconfont-home"></span>首页</a>
		</li>
		<li class="active">
			<a href="http://c.biancheng.net/sitemap/" rel="nofollow"><span class="iconfont iconfont-book"></span>教程</a>
		</li>
		<li>
			<a href="http://vip.biancheng.net/p/vip/show.php" rel="nofollow" target="_blank"><span class="iconfont iconfont-vip"></span>VIP会员</a>
		</li>
		<li>
			<a href="http://vip.biancheng.net/p/q2a/show.php" rel="nofollow" target="_blank"><span class="iconfont iconfont-q2a"></span>一对一答疑</a>
		</li>
		<li>
			<a href="http://fudao.biancheng.net/" rel="nofollow" target="_blank"><span class="iconfont iconfont-fudao"></span>辅导班</a>
		</li>
	</ul>
</div>
<div id="header" class="clearfix">
	<a id="logo" class="left" href="http://c.biancheng.net/">
		<img height="26" src="./8.22Java中main()方法的格式为什么是固定不变的？_files/logo.png" alt="C语言中文网">
	</a>
	<ul id="nav-main" class="hover-none left clearfix">
		<li class="wap-yes"><a href="http://c.biancheng.net/">首页</a></li>
		<li><a href="http://c.biancheng.net/c/">C语言教程</a></li>
		<li><a href="http://c.biancheng.net/cplus/">C++教程</a></li>
		<li><a href="http://c.biancheng.net/python/">Python教程</a></li>
		<li><a href="http://c.biancheng.net/java/">Java教程</a></li>
		<li><a href="http://c.biancheng.net/linux_tutorial/">Linux入门</a></li>
		<li><a href="http://c.biancheng.net/sitemap/" title="网站地图">更多&gt;&gt;</a></li>
	</ul>
	<span id="sidebar-toggle" class="toggle-btn" toggle-target="#sidebar">目录 <span class="glyphicon"></span></span>

	<a href="http://vip.biancheng.net/?from=topbar" class="user-info glyphicon glyphicon-user hover-none" target="_blank" rel="nofollow" title="用户中心"></a>
</div>
<div id="main" class="clearfix">
	<div id="sidebar" class="toggle-target">
	<div id="contents">
		<dt><span class="glyphicon glyphicon-option-vertical" aria-hidden="true"></span><a href="http://c.biancheng.net/java/">Java教程</a></dt>
		
			<dd>
				<span class="channel-num">1</span>
				<a href="http://c.biancheng.net/java/10/">Java入门基础及环境搭建</a>
			</dd>
		
			<dd>
				<span class="channel-num">2</span>
				<a href="http://c.biancheng.net/java/20/">Java程序设计基础</a>
			</dd>
		
			<dd>
				<span class="channel-num">3</span>
				<a href="http://c.biancheng.net/java/30/">Java流程控制语句</a>
			</dd>
		
			<dd>
				<span class="channel-num">4</span>
				<a href="http://c.biancheng.net/java/40/">Java字符串处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">5</span>
				<a href="http://c.biancheng.net/java/50/">Java数字和日期处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">6</span>
				<a href="http://c.biancheng.net/java/60/">Java内置包装类</a>
			</dd>
		
			<dd>
				<span class="channel-num">7</span>
				<a href="http://c.biancheng.net/java/70/">Java数组处理</a>
			</dd>
		<dd class="this"> <span class="channel-num">8</span> <a href="http://c.biancheng.net/java/80/">Java类和对象</a> </dd><dl class="dl-sub"><dd>8.1 <a href="http://c.biancheng.net/view/939.html">Java面向对象概述</a></dd><dd>8.2 <a href="http://c.biancheng.net/view/940.html">Java认识类和对象</a></dd><dd>8.3 <a href="http://c.biancheng.net/view/943.html">Java类的定义</a></dd><dd>8.4 <a href="http://c.biancheng.net/view/945.html">Java类的属性</a></dd><dd>8.5 <a href="http://c.biancheng.net/view/948.html">Java创建一个学生类</a></dd><dd>8.6 <a href="http://c.biancheng.net/view/952.html">Java成员方法</a></dd><dd>8.7 <a href="http://c.biancheng.net/view/953.html">Java this关键字</a></dd><dd>8.8 <a href="http://c.biancheng.net/view/956.html">Java对象的创建</a></dd><dd>8.9 <a href="http://c.biancheng.net/view/vip_7063.html">Java new运算符深入剖析</a><span class="glyphicon glyphicon-usd"></span></dd><dd>8.10 <a href="http://c.biancheng.net/view/6104.html">Java匿名对象</a></dd><dd>8.11 <a href="http://c.biancheng.net/view/957.html">Java访问对象的属性和行为</a></dd><dd>8.12 <a href="http://c.biancheng.net/view/959.html">Java对象的销毁</a></dd><dd>8.13 <a href="http://c.biancheng.net/view/vip_7064.html">Java中的空对象（null）是怎么回事？</a><span class="glyphicon glyphicon-usd"></span></dd><dd>8.14 <a href="http://c.biancheng.net/view/961.html">Java用户修改密码</a></dd><dd>8.15 <a href="http://c.biancheng.net/view/6114.html">Java注释（类、方法和字段）</a></dd><dd>8.16 <a href="http://c.biancheng.net/view/965.html">Java访问控制修饰符</a></dd><dd>8.17 <a href="http://c.biancheng.net/view/6038.html">Java static关键字</a></dd><dd>8.18 <a href="http://c.biancheng.net/view/6150.html">Java静态导入</a></dd><dd>8.19 <a href="http://c.biancheng.net/view/vip_7065.html">Java static的常见问题和使用误区</a><span class="glyphicon glyphicon-usd"></span></dd><dd>8.20 <a href="http://c.biancheng.net/view/6053.html">Java final修饰符</a></dd><dd>8.21 <a href="http://c.biancheng.net/view/972.html">Java main()方法</a></dd><dd class="active">8.22 <a href="http://c.biancheng.net/view/vip_7066.html">Java中main()方法的格式为什么是固定不变的？</a><span class="glyphicon glyphicon-usd"></span></dd><dd>8.23 <a href="http://c.biancheng.net/view/974.html">Java方法的可变参数</a></dd><dd>8.24 <a href="http://c.biancheng.net/view/976.html">Java构造方法</a></dd><dd>8.25 <a href="http://c.biancheng.net/view/979.html">Java查询个人信息</a></dd><dd>8.26 <a href="http://c.biancheng.net/view/980.html">Java析构方法</a></dd><dd>8.27 <a href="http://c.biancheng.net/view/6084.html">Java包（package）</a></dd><dd>8.28 <a href="http://c.biancheng.net/view/985.html">Java使用自定义包</a></dd><dd>8.29 <a href="http://c.biancheng.net/view/6116.html">Java递归算法</a></dd></dl>
			<dd>
				<span class="channel-num">9</span>
				<a href="http://c.biancheng.net/java/90/">Java继承和多态</a>
			</dd>
		
			<dd>
				<span class="channel-num">10</span>
				<a href="http://c.biancheng.net/java/100/">Java异常处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">11</span>
				<a href="http://c.biancheng.net/java/110/">Java集合、泛型和枚举</a>
			</dd>
		
			<dd>
				<span class="channel-num">12</span>
				<a href="http://c.biancheng.net/java/120/">Java反射机制</a>
			</dd>
		
			<dd>
				<span class="channel-num">13</span>
				<a href="http://c.biancheng.net/java/130/">Java输入/输出流</a>
			</dd>
		
			<dd>
				<span class="channel-num">14</span>
				<a href="http://c.biancheng.net/java/java/135/">Java注解</a>
			</dd>
		
	</div>
</div>
	<div id="article-wrap">
		<div id="article">
			<div class="arc-info">
	<span class="position"><span class="glyphicon glyphicon-map-marker"></span> <a href="http://c.biancheng.net/">首页</a> &gt; <a href="http://c.biancheng.net/java/">Java教程</a> &gt; <a href="http://c.biancheng.net/java/80/">Java类和对象</a></span>
	<span class="read-num">阅读：5,040</span>
</div>

<div id="ad-position-bottom"></div>
			<h1>Java中main()方法的格式为什么是固定不变的？</h1>
			<div class="pre-next-page clearfix">
                    <span class="pre left"><span class="icon">&lt;</span> <span class="text-brief text-brief-pre">上一页</span><a href="http://c.biancheng.net/view/972.html">Java main()方法</a></span>
                    <span class="next right"><a href="http://c.biancheng.net/view/974.html">Java方法的可变参数</a><span class="text-brief text-brief-next">下一页</span> <span class="icon">&gt;</span></span>
                </div>
			<div id="ad-arc-top"><p class="pic"></p><p class="text" adid="java-1v1q2a"><a href="http://c.biancheng.net/view/7552.html" target="_blank" style="color: #D33428;">C语言中文网推出辅导班啦，包括<span style="color: #008000;">「C语言辅导班、C++辅导班、算法/数据结构辅导班」</span>，全部都是一对一教学：一对一辅导 + 一对一答疑 + 布置作业 + 项目实践 + 永久学习。QQ在线，随时响应！</a></p></div>
			<div id="arc-body">在《<a href="http://c.biancheng.net/view/972.html" target="_blank">Java main()方法</a>》一节中提到 main() 方法定义必须是“public static void main(String[] 字符串数组参数名)”，本节告诉大家为什么在 Java 中定义 main 方法的语法是不可改变的。<br>
<br>
<b>1）public</b> ：这个字段决定了方法是否可以被外部方法调用。我们知道C语言里面的函数是运行操作系统环境中的，可以认为操作系统一个大的方法，这个方法调用了C语言的 main()。Java 中也是同样的道理，只不过 Java 的 main 方法是跑在 JVM 中的。如果不限定 public，JVM 就不能调用 main 方法。<br>
<br>
注意：在 Java SE1.4 以前是不强制 main 方法为 public 的。当 main 方法不是 public 时，有些版本的 Java 解释器也可以执行 Java 应用程序。Java SE1.4 及以后的版本中强制 main 方法是 public。<br>
<blockquote>
	面向对象的语言叫方法，例如 Java。面向过程的语言叫函数，例如C语言。实际上方法就是函数，函数就是方法，只是在不同的语言不同的称呼而已。</blockquote>
<b>2）static</b>：在C语言中，所有的函数都可以被直接调用，main 函数相当于全局方法，没有类的概念，但在 Java 中一般先要创建一个类的对象，再通过对象调用方法，但是在执行 main 方法之前创建一个对象显然是不可能的，因为 JVM 规定 main 方法为入口方法，从 main 开始执行。static 关键字就解决了这个问题，static 关键字修饰的方法可以视为类方法，不需要创建对象就可以直接调用该方法。<br>
<br>
<b>3）void</b>：由于 Java 的主方法是栈中最底层的方法，所以并不存在能够接收的值，没有能接收 main 方法的返回值，所以使用 void。<br>
<br>
为什么 Java 不能像C语言，C++ 那样返回 int 型值？<br>
<br>
C语言的 main 函数的调用过程：首先，程序进入到入口方法之前，是发生了很多事情的。操作系统的安排，启动运行时库，运行时库再初始化好环境，然后启动你的入口函数，你的程序才正常的运行起来。等你的程序运行结束后，就退回到运行时库，然后再退回到操作系统，然后系统再调度其他程序执行。因为 main() 不是由操作系统直接调用，所以返回类型不一样也是可以理解的。可以认为运行时库就是操作系统和 main 函数的中间联系人，在C语言中由运行时库直接调用 main 函数，所以 main 函数的返回值也是运行时库接收。<br>
<br>
在 Java 中，可以认为是操作系统→JVM→main 方法这样的调用过程，JVM 直接调用 main 方法，所以如果 main 方法有返回值，即 JVM 接收。但是 JVM 被设计为不接受任何返回值，所以 main 方法不能有返回值，只能 void。<br>
<br>
<b>4）String[]</b>：类似于C语言中的参数 char**和int，Java 中数组可以记录数目，所以省去了 int 类型的参数来表示字符串个数。<br>
<br>
因此，main() 方法定义必须是：“public static void main(String[] 字符串数组参数名) ”，这是 Java 的规范。</div>
			<div id="arc-append">
	<p>关注微信公众号「站长严长生」，在手机上阅读所有教程，随时随地都能学习。本公众号由<a class="col-link" href="http://c.biancheng.net/view/8092.html" target="_blank" rel="nofollow">C语言中文网站长</a>运营，每日更新，坚持原创，敢说真话，凡事有态度。</p>
	<p style="margin-top:12px; text-align:center;">
		<img width="180" src="./8.22Java中main()方法的格式为什么是固定不变的？_files/qrcode_weixueyuan_original.png" alt="魏雪原二维码"><br>
		<span class="col-green">微信扫描二维码关注公众号</span>
	</p>
</div>
<!-- <p>关注微信公众号「魏雪原」，跟着<a class="col-link" href="/view/8092.html" target="_blank">站长</a>一起学习，拒绝躺平，跳出内卷，用知识完成阶级跃升：</p>
	<ul>
		<li>每日更新，坚持原创，敢说真话，凡事有态度。</li>
		<li>编程+求职+创业+营销，既有硬知识，也有软技能。</li>
		<li>手机端阅读教程，随时随地都能学习。</li>
		<li>即将绑定网站部分功能，包括注册登录、找回密码、获取下载链接等。</li>
	</ul> -->
			<div class="pre-next-page clearfix">
                    <span class="pre left"><span class="icon">&lt;</span> <span class="text-brief text-brief-pre">上一页</span><a href="http://c.biancheng.net/view/972.html">Java main()方法</a></span>
                    <span class="next right"><a href="http://c.biancheng.net/view/974.html">Java方法的可变参数</a><span class="text-brief text-brief-next">下一页</span> <span class="icon">&gt;</span></span>
                </div>
			<div id="ad-arc-bottom"></div>

<!-- <div id="ad-bottom-weixin" class="clearfix">
	<div class="left" style="width: 535px;">
		<p><span class="col-red">编程帮</span>，一个分享编程知识的公众号。跟着<a class="col-link" href="/cpp/about/author/" target="_blank">站长</a>一起学习，每天都有进步。</p>
		<p>通俗易懂，深入浅出，一篇文章只讲一个知识点。</p>
		<p>文章不深奥，不需要钻研，在公交、在地铁、在厕所都可以阅读，随时随地涨姿势。</p>
		<p>文章不涉及代码，不烧脑细胞，人人都可以学习。</p>
		<p>当你决定关注「编程帮」，你已然超越了90%的程序员！</p>
	</div>
	<div class="right" style="width: 150px;">
		<img width="150" src="/templets/new/images/erweima_biancheng.gif?v=1.6.72" alt="编程帮二维码" /><br />
		<span class="col-green">微信扫描二维码关注</span>
	</div>
</div> -->

<div id="nice-arcs" class="box-bottom">
	<h4>优秀文章</h4>
	<ul class="clearfix">
<li><a href="http://c.biancheng.net/view/33.html" title="Go语言map元素的删除和清空">Go语言map元素的删除和清空</a></li>
<li><a href="http://c.biancheng.net/view/2022.html" title="C语言二维数组指针（指向二维数组的指针）详解">C语言二维数组指针（指向二维数组的指针）详解</a></li>
<li><a href="http://c.biancheng.net/view/3529.html" title="汇编语言64位MOV指令">汇编语言64位MOV指令</a></li>
<li><a href="http://c.biancheng.net/view/4775.html" title="使用源码安装Go语言">使用源码安装Go语言</a></li>
<li><a href="http://c.biancheng.net/view/5127.html" title="Go语言类型强制转换">Go语言类型强制转换</a></li>
<li><a href="http://c.biancheng.net/view/6016.html" title="深入解析Java new运算符">深入解析Java new运算符</a></li>
<li><a href="http://c.biancheng.net/view/6278.html" title="PHP shuffle()：随机打乱数组">PHP shuffle()：随机打乱数组</a></li>
<li><a href="http://c.biancheng.net/view/7287.html" title="PHP函数参数传递的四种方式">PHP函数参数传递的四种方式</a></li>
<li><a href="http://c.biancheng.net/view/vip_7719.html" title="C++ map容器operator[]和insert()效率对比（深度剖析）">C++ map容器operator[]和insert()效率对比（深度剖析）</a></li>
<li><a href="http://c.biancheng.net/view/9487.html" title="IP地址和Mac地址的区别">IP地址和Mac地址的区别</a></li>
</ul>
</div>
		</div>
		
	</div>
</div>
<script type="text/javascript">
// 当前文章ID
window.arcIdRaw = 'a_' + 7066;
window.arcId = "4d81d7nAkXSWiUsBBnDYqpobP+4aitmwWx79jCH36qOEXHBf5afMOnCPKIg";
window.typeidChain = "99|79";
</script>
<div id="footer" class="clearfix">
	<div class="info left">
	<p>精美而实用的网站，分享优质编程教程，帮助有志青年。千锤百炼，只为大作；精益求精，处处斟酌；这种教程，看一眼就倾心。</p>
	<p>
		<a href="http://c.biancheng.net/view/8066.html" target="_blank" rel="nofollow">关于网站</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8092.html" target="_blank" rel="nofollow">关于站长</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8097.html" target="_blank" rel="nofollow">如何完成一部教程</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8093.html" target="_blank" rel="nofollow">联系我们</a> <span>|</span>
		<a href="http://c.biancheng.net/sitemap/" target="_blank" rel="nofollow">网站地图</a>
	</p>
	<p>Copyright ©2012-2021 biancheng.net, <a href="http://www.beian.miit.gov.cn/" target="_blank" rel="nofollow" style="color:#666;">陕ICP备15000209号</a></p>
	</div>
	<img class="right" src="./8.22Java中main()方法的格式为什么是固定不变的？_files/logo_bottom.gif" alt="底部Logo">
	<span id="return-top"><b>↑</b></span>
</div>

<script type="text/javascript">
window.siteId = 4;
window.cmsTemplets = "/templets/new";
window.cmsTempletsVer = "1.6.72";
</script>

<script src="./8.22Java中main()方法的格式为什么是固定不变的？_files/jquery1.12.4.min.js.下载"></script>
<script src="./8.22Java中main()方法的格式为什么是固定不变的？_files/common.js.下载"></script>
<span style="display:none;"><script src="./8.22Java中main()方法的格式为什么是固定不变的？_files/z_stat.php" type="text/javascript" defer="defer" async="async"></script></span>

</body></html>